SYS_EXIT  equ 1
SYS_READ  equ 3
SYS_WRITE equ 4
STDIN     equ 0
STDOUT    equ 1
segment .data
   msg1 db "Enter a digit ", 0xA,0xD
   len1 equ $- msg1
   msg2 db "Please enter a second digit", 0xA,0xD
   len2 equ $- msg2
   msg3 db "The sum is: "
   len3 equ $- msg3
segment .bss
   num1 resb 2
   num2 resb 2
   res resb 1
section .text
   global _start    ;必须声明 gcc
_start:             ;告诉链接器入口
   mov eax, SYS_WRITE
   mov ebx, STDOUT
   mov ecx, msg1
   mov edx, len1
   int 0x80
   mov eax, SYS_READ
   mov ebx, STDIN
   mov ecx, num1
   mov edx, 2
   int 0x80
   mov eax, SYS_WRITE
   mov ebx, STDOUT
   mov ecx, msg2
   mov edx, len2
   int 0x80
   mov eax, SYS_READ
   mov ebx, STDIN
   mov ecx, num2
   mov edx, 2
   int 0x80
   mov eax, SYS_WRITE
   mov ebx, STDOUT
   mov ecx, msg3
   mov edx, len3
   int 0x80
   ; 将第一个数字移动到 eax 寄存器，将第二个数字移动至 ebx
   ; 并减去 ascii 0 将其转换为十进制数
   mov eax, [num1]
   sub eax, '0'
   mov ebx, [num2]
   sub ebx, '0'
   ; 添加 eax 和 ebx
   add eax, ebx
   ; 将 0 添加到以将十进制和转换为 ASCII
   add eax, '0'
   ; 将总和存储在内存位置 res 中
   mov [res], eax
   ; 打印总和
   mov eax, SYS_WRITE
   mov ebx, STDOUT
   mov ecx, res
   mov edx, 1
   int 0x80
exit:
   mov eax, SYS_EXIT
   xor ebx, ebx
   int 0x80